|
Definition | |||||||||||
In a Blocking assignment in a clocked process the value is transferred when the process ends In a Non-blocking assignment in a clocked process the value is transferred immediately |
|||||||||||
Syntax | |||||||||||
blocking_assignment ::= variable_lvalue = delay_or_event_control expression | hierarchical_dynamic_array_variable_identifier = dynamic_array_new | [ implicit_class_handle . | class_scope | package_scope ] hierarchical_variable_identifier nonblocking_assignment ::= variable_lvalue <= [ delay_or_event_control ] expression |
|||||||||||
Placement | |||||||||||
|
|||||||||||
Rules | |||||||||||
Things to remember | |||||||||||
Nonblocking and Blocking Assignments can be mixed in the same always block. However you must be careful when doing this! It’s actually up to the synthesis tools to determine whether a blocking assignment within a clocked always block will infer a Flip-Flop or not. If it is possible that the signal will be read before being assigned, the tools will infer sequential logic. If not, then the tools will generate combinational logic. Therefore it is best just to separate your combinational and sequential code as much as possible. |
|||||||||||
Synthesis | |||||||||||
Example | |||||||||||
See Also | |||||||||||